# -*- coding: utf-8 -*-
# @Author  : haomh
# @Time    : 2025/11/8 10:38
# @Function:
#

# 基础考试试卷
#
# 期数 ：42期    姓名：郝美慧	性别：女		成绩：
# 1.python的数据类型都有哪些(5分)
# 注：开头字母都应该是小写
# int float string bool dictionary tuple list set
from operator import ifloordiv

# 2.列表，元组、字典、集合如何定义，分别举例（5分）
# list = []
# dict = {'key': 'value', 'key2': 'value2'}
# dict1 = dict(key='value')
# t = ()
# set = {}

# 3.列表[1,2,3,4,5,5,2,3,2,4]	去重，不能使用set函数（10分）
# list =[1,2,3,4,5,5,2,3,2,4]
# list1 =[]
# for i  in list:
#     if i in list1:
#         break
#     else:
#         list1.append(i)
# print(list1)

# 4.比如有这样一个文件data.txt内存在以下内容（15分）
# ----------------------------
# lucy:21,tom:30,xiaoming:18,xiaohong:15,xiaowang:20,xiaohei:19
# ----------------------------
# 请通过代码读取文件并输出年龄大于18岁的人名
# f1 = open('data.txt', 'w')
# f1.write('lucy:21,tom:30,xiaoming:18,xiaohong:15,xiaowang:20,xiaohei:19')
# f = open('data.txt', 'r')
# content = f.read().strip()
# pairs = content.split(',')
# result = []
# for pair in pairs:
#     name, age_str = pair.split(':')
#     age = int(age_str)
#     if age > 18:
#         result.append(name)
# print("年龄大于18岁的人名：", result)
# f.close()

# 5.请用列表推导式得出1-100能被3整除的数（5分）

# list = [i for i in range(1, 101) if i % 3 == 0]
# print(list)

# 6.continue和break的区别（5分）
'''
continue：满足条件后继续执行本次循环
break：满足条件后跳出本次循环执行下一次循环
'''

# 7.有一堆字符串，“welocme to super&Test”，打印出emcolew ot tseT&repus全部单词原位置反转，
# 不能使用索引[::-1]输出或者reverse/reversed函数实现，自己写字符串首尾交换方法（15分）

# str = 'welocme to super&Test'
# str1 = ''
# num = len(str) - 1
# while num >= 0:
#     str1 += str[num]
#     num -= 1
# print(str1)

# 8.怎么在函数内修改/使用全局变量
# 使用global关键字
# a = 100
#
#
# def func():
#     global a
#     a = 200
#     print(a)
#
#
# func()


# 9.python可变数据类型和不可变数据类型都有哪些（5分）
'''
1.不可变数据类型：整型，浮点型，字符串，布尔型，元组
2.可变数据类型：列表，集合，字典
'''


# 10.递归实现斐波那契数列12个就可以（10分）
# def func1(n):
#     if n == 1 or n == 2:
#         return 1
#     return func1(n - 1) + func1(n - 2)
#
#
# print("斐波那契数列前12个元素：")
# for i in range(1, 13):
#     print(func1(i), end=" ")

# 11、debug的快捷键：f8/f7/f9分别的作用（5分）

# F7:逐行执行代码,遇到函数会进入函数内部逐行执行代码,颗粒度最细
# F8:逐行执行代码,遇到函数如果函数内有断点,快速执行到断点为止,如果没有断点,快速执行完当前函数
# F9:从一个断点快速执行到下一个断点,中间不停

# 12、如何实现["1","2","3"]变成[1,2,3] ?（5分）
# list1 = ['1', '2', '3']
# list2 = []
# for i in list1:
#     list2.append(int(i))
# print(list2)

# 13、开发一个注册系统，界面可以用print打印，保存姓名和年龄，存在的用户提示已注册，不存在的可以注册成功（提示建议使用函数划分不同的功能，比如查询用户，新增用户）（10分）
# stu_dict = {}
# # 新增用户
# def add_stu(name, age):
#     if name in stu_dict:
#         print('学生已存在，请重新输入')
#     else:
#         stu_dict[name] = age
#         print(f'学生：{name}已添加')
#
#
# def query_stu():
#     print(f'全部学生信息如下：{stu_dict}')
#
#
# def query_stu_byone(name):
#     if name in stu_dict:
#         print(f'学生姓名为{name},年龄为{stu_dict[name]}')
#     else:
#         print(f'未查询到学生：{name}信息')
#
#
# def del_stu(name):
#     if name in stu_dict:
#         del stu_dict[name]
#         print(f'学生：{name}删除成功')
#     else:
#         print(f'未查找到学生：{name}信息')
#
# def func():
#     while True:
#         print(stu_dict)
#         print('1-新增用户/n', '2-查询单个用户信息/n', '3-查询全部用户信息/n', '4-删除用户/n', '5-退出系统')
#         choose = input(f'请输入您的需求对应的数字')
#         if choose == '5':
#             print('感谢使用本系统')
#             break
#         if choose == '1':
#             name = input('请输入学生姓名')
#             age = input('请输入学生年龄')
#             add_stu(name, age)
#             continue
#         if choose == '2':
#             name = input('请输入学生姓名')
#             query_stu_byone(name)
#             continue
#         if choose == '3':
#             query_stu()
#             continue
#         if choose == '4':
#             name = input('请输入要删除的学生姓名')
#             del_stu(name)
#             continue
#
# func()
